public class Rey extends Pieza{
	
	private boolean fueMovido = false;
	
	public Rey(int fila, String columna, String nombre, String tipo){
		this.fila=fila;
		this.columna=columna;
		this.nombre=nombre;
		this.tipo=tipo;
		MoverPieza = new MoverComoTorre();
		MoverDiagonal = new MoverComoAlfil();
	}
	
	public boolean getFueMovido(){
		return fueMovido;
	}
	
	public void setFueMovido(){
		this.fueMovido=true;
	}
	
	public void moverRey(Tablero tablero, Pieza pieza, int filaDestino, String columnaDestino){
		if(pieza.getFila()==filaDestino && pieza.getColumna()!=columnaDestino){ // si la fila destino es igual a la fila del rey y la columna destino es diferente a la columna del rey
			if(tablero.diferenciaColumna(pieza, columnaDestino)==1 || tablero.diferenciaColumna(pieza, columnaDestino)==-1){ // si la columna destino es igual a 1 o -1
				MoverPieza.movimiento(tablero, pieza, filaDestino, columnaDestino);
			}
			else if(tablero.diferenciaColumna(pieza, columnaDestino)>1 || tablero.diferenciaColumna(pieza, columnaDestino)<-1){ // si la diferencia de columna es mayor a 1 o menor a -1
				System.out.println("movimiento incorrecto, el rey no puede moverse mas de un casillero en horizontal");
			}
		}
		else if(pieza.getFila()!=filaDestino && pieza.getColumna()==columnaDestino){ // si la fila destino es diferente a la fila del rey y la columna destino es igual a la columna del rey
			if(pieza.diferenciaFila(filaDestino)==1 || pieza.diferenciaFila(filaDestino)==-1){ // si la diferencia de columna es igual a 1 o -1
				MoverPieza.movimiento(tablero, pieza, filaDestino, columnaDestino);
			}
			else if(pieza.diferenciaFila(filaDestino)>1 || pieza.diferenciaFila(filaDestino)<-1){ // si la diferencia de columna es mayor a 1 o menor a -1
				System.out.println("movimiento incorrecto, el rey no puede moverse mas de un casillero en vetical");
			}
		}
		else if(pieza.getFila()!=filaDestino && pieza.getColumna()!=columnaDestino){ // si la fila destino es diferente a la fila del rey y la columna destino es diferente a la columna del rey
			if(pieza.diferenciaFila(filaDestino)==tablero.diferenciaColumna(pieza, columnaDestino)){ // si la diferencia de fila es igual a la diferencia de columna
				if(pieza.diferenciaFila(filaDestino)==1 || pieza.diferenciaFila(filaDestino)==-1){ // si la diferencia de fila es igual a 1 o -1
					MoverDiagonal.movimientoDiagonal(tablero, pieza, filaDestino, columnaDestino);
				}
				else{
					System.out.println("movimiento incorrecto, el rey no puede moverse mas de un casillero en diagonal");
				}
			}
			else if(pieza.diferenciaFila(filaDestino)!=tablero.diferenciaColumna(pieza, columnaDestino)){
				if(pieza.diferenciaFila(filaDestino)==1 && tablero.diferenciaColumna(pieza, columnaDestino)==-1){
					MoverDiagonal.movimientoDiagonal(tablero, pieza, filaDestino, columnaDestino);
				}
				else if(pieza.diferenciaFila(filaDestino)==-1 && tablero.diferenciaColumna(pieza, columnaDestino)==1){
					MoverDiagonal.movimientoDiagonal(tablero, pieza, filaDestino, columnaDestino);
				}
				else{
					System.out.println("movimiento incorrecto, el rey no puede moverse mas de un casillero en diagonal");
				}
			}
			else{
				System.out.println("movimiento incorrectoo");
			}
		}
		else if(pieza.getFila()==filaDestino && pieza.getColumna()==columnaDestino){ // si la fila destino es igual a la fila del rey y la columna destino es igual a la columna del rey
			System.out.println("movimiento incorrecto, el rey no se movio");
		}
	}
}
